package fr.uniscol.service.impl;

import fr.uniscol.dao.IEnseignantDao;
import fr.uniscol.dao.IServiceEnseignantDao;
import fr.uniscol.model.BaseAnneeScolaire;
import fr.uniscol.model.Enseignant;
import fr.uniscol.model.Groupe;
import fr.uniscol.model.ServiceEnseignant;
import fr.uniscol.service.IEnseignantService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("enseignantService")
public class EnseignantServiceImpl implements IEnseignantService {

	@Autowired
	private IEnseignantDao enseignantDao;
     
    @Autowired
    private IServiceEnseignantDao serviceEnseignantDao;
	
	@Override
	public List<Enseignant> getAllEnseignantsOfEtablissement(BaseAnneeScolaire base) {
		return enseignantDao.getAllEnseignantsOfEtablissement(base);
	}

	@Override
	public Enseignant getEnseignantById(long enseignantId) {
            
		Enseignant enseignant = enseignantDao.getEnseignantById(enseignantId);
		
		enseignant.setServices(enseignantDao.getServicesOfEnseignant(enseignant));
		
		return enseignant;
	}
    
    @Override
    @Transactional(readOnly = false)
    public boolean saveEnseignant(Enseignant enseignant){
        
        long enseignantId = enseignantDao.saveEnseignant(enseignant);
        
        if(enseignantId == 0){
            return false;
            
        }else{
            enseignant.setId(enseignantId);
            return true;
        }
    }

    @Override
    @Transactional(readOnly = false)
    public boolean saveServiceEnseignant(ServiceEnseignant service) {
        
        long serviceId = serviceEnseignantDao.saveServiceEnseignant(service);
        service.setId(serviceId);
        
        return serviceId != 0;
    }

    @Override
    @Transactional(readOnly = false)
    public boolean deleteEnseignant(Enseignant enseignant) {
        
        return enseignantDao.deleteEnseignant(enseignant);
    }

    @Override
    public List<ServiceEnseignant> getServicesOfGroupe(Groupe groupe) {
        return serviceEnseignantDao.getServicesOfGroupe(groupe);
    }
}
